import { add_class } from '../../../element/class_operate/Func';
import { create_staticCssTxt_mana } from '../../../element/css/setStaticCsstxt';
// eslint-disable-next-line no-unused-vars
import { unit_staticCssTxt_mana } from '../../../element/css/setStaticCsstxt/Classes/cla_unit_staticCssTxt_mana';
import {
  ObjectOnlyPushSet,
  removeObjectOnlyPushSet,
} from '../../../Func/uniFunc/Func/ObjectOnlyPushSet_operate';
import { direct_drag_identify, drag_id } from '../DataDefine/sourceData';
import { unit_unit_direct_drag_mana } from './cla_unit_direct_drag_mana';

const win_direct_drag_manaTag = 'win_direct_drag_mana';

const drag_prop_data = 'dragEl_arr';

/**
 * v-drag 拖拽指令 的 样式
 * css var 动态 top left 样式
 * @type {unit_staticCssTxt_mana}
 */
const StaticCss = create_staticCssTxt_mana('vDrag');

/**
 * 当前 操作 的 dragID
 */
let dragID;

class win_direct_drag_mana {
  get [Symbol.toStringTag]() {
    return win_direct_drag_manaTag;
  }

  constructor() {}

  [drag_prop_data] = [];

  /**
   * 添加 element drag 信息
   * @param {HTMLElement} element
   */
  active_dragEl(element) {
    // let cueEl_attribute_mana = new attribute_mana(element);
    // // 添加 dragEl 标识
    // cueEl_attribute_mana.setAttribute(direct_drag_identify);

    // // 添加 drag id
    // let curdrag_id = drag_id + Math.floor(Math.random() * 9000) + 1000;
    // cueEl_attribute_mana.setAttribute(drag_id, curdrag_id);

    // 装载 unit drag mana 信息
    let unit_mana = new unit_unit_direct_drag_mana(element);
    // unit_mana.attribute_mana = cueEl_attribute_mana;

    dragID = get_dragId(element);

    let staCssCla = `v_drag_${dragID}`;

    let V_DCla = `v_D_${dragID}`;

    // 添加 class 到 目标元素中
    add_class(element, V_DCla);

    //添加 drag 标识
    add_class(element, direct_drag_identify);

    // 添加 hover 鼠标 手形状
    add_class(element, 'cursorPointer');

    // 最高高度
    add_class(element, 'z_i99');

    //   添加 动态 css var 样式 到 head 元素中
    cssVar_top0left(staCssCla, V_DCla);

    ObjectOnlyPushSet(this, dragID, unit_mana, drag_prop_data);
  }

  /**
   * 移除 element drag 信息
   * @param {HTMLElement} element
   */
  remove_dragEl(element) {
    dragID = get_dragId(element);

    let V_DCla = `v_D_${dragID}`;

    // 添加 class 到 目标元素中
    add_class(element, V_DCla);

    //添加 drag 标识
    add_class(element, direct_drag_identify);

    // 添加 hover 鼠标 手形状
    add_class(element, 'cursorPointer');

    /**
     * @type {unit_unit_direct_drag_mana}
     */
    let cur_unit_mana = this[dragID];

    /**
     * 移除 drag 所有 信息 记录
     */
    cur_unit_mana.attribute_mana.removeAllAttribute();

    /**
     * 移除 记录信息
     */
    removeObjectOnlyPushSet(this, dragID, true, drag_prop_data);
  }
}

/**
 *
 * @param {HTMLElement} element
 */
function get_dragId(element) {
  return element.getAttribute(drag_id);
}

function cssVar_top0left(staCssCla, V_DCla) {
  StaticCss.setStaticCssTxt(
    staCssCla,
    `.${V_DCla}{
        top : var(--top) !important;
        left : var(--left) !important;
        transform:none !important;
        transition:top 0s !important ,left 0s !important;
    }`
  );
}

export { win_direct_drag_mana, get_dragId };
